home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 August: Tool Chest / Dev.CD Aug 00 TC Disk 2.toast / pc / sample code / overview / moreisbetter / mib-libraries / morecontrols / morecontrols.h < prev   
Encoding:
C/C++ Source or Header  |  2000-06-23  |  8.4 KB  |  253 lines

  1. /*
  2.     File:        MoreControls.h
  3.  
  4.     Contains:    
  5.  
  6.     Written by:    Pete Gontier
  7.  
  8.     Copyright:    Copyright (c) 1998-1999 Apple Computer, Inc., All Rights Reserved.
  9.  
  10.                 You may incorporate this Apple sample source code into your program(s) without
  11.                 restriction. This Apple sample source code has been provided "AS IS" and the
  12.                 responsibility for its operation is yours. You are not permitted to redistribute
  13.                 this Apple sample source code as "Apple sample source code" after having made
  14.                 changes. If you're going to re-distribute the source, we require that you make
  15.                 it clear in the source that the code was descended from Apple sample source
  16.                 code, but that you've made changes.
  17.  
  18.     Change History (most recent first):
  19.  
  20.          <5>     2/11/99    PCG     Carbon d7
  21.          <4>      2/9/99    PCG     more TARGET_CARBON
  22.          <3>     1/25/99    PCG     TARGET_CARBON
  23.          <2>    11/11/98    PCG     fix headers
  24.          <1>    11/10/98    PCG     first big re-org at behest of Quinn
  25.  
  26.     Old Change History (most recent first):
  27.  
  28.          <7>    10/11/98    Quinn   Convert "MorePrefix.h" to "MoreSetup.h".
  29.          <6>    10/29/98    PCG     various
  30.          <5>      9/9/98    PCG     re-work import and export pragmas
  31.          <4>      9/1/98    PCG     Universal Headers 3.2
  32.          <3>     7/24/98    PCG        coddle linker (C++, CFM-68K)
  33.          <2>     7/24/98    PCG        eliminate dependency on 'qd'
  34.          <2>     6/23/98    PCG     add IsScrollBar
  35.          <1>     6/16/98    PCG     initial checkin
  36. */
  37.  
  38. #pragma once
  39.  
  40. #include "MoreSetup.h"
  41.  
  42. #include <Controls.h>
  43. #include <Lists.h>
  44.  
  45. #if TARGET_CARBON
  46. #    include <ControlDefinitions.h>
  47. #endif
  48.  
  49. enum
  50. {
  51.     //////////////////////////////////////////////////////////////////
  52.     //
  53.     //    resource IDs of CDEFs (control definition proc resources)
  54.     //
  55.     //////////////////////////////////////////////////////////////////
  56.  
  57.     kControlOldButtonDefProcResID,
  58.     kControlOldScrollBarDefProcResID,
  59.     kControlBevelButtonDefProcResID,
  60.     kControlSliderDefProcResID,
  61.     kControlTriangleDefProcResID,
  62.     kControlProgressBarDefProcResID,
  63.     kControlLittleArrowsDefProcResID,
  64.     kControlChasingArrowsDefProcResID,
  65.     kControlTabsDefProcResID,
  66.     kControlSeparatorLineDefProcResID,
  67.     kControlGroupBoxDefProcResID,
  68.     kControlImageWellDefProcResID,
  69.     kControlPopupArrowDefProcResID,
  70.     kControlUnluckyDefProcResID,
  71.     kControlPlacardDefProcResID,
  72.     kControlClockDefProcResID,
  73.     kControlUserPaneDefProcResID,
  74.     kControlEditTextDefProcResID,
  75.     kControlStaticTextDefProcResID,
  76.     kControlPictureDefProcResID,
  77.     kControlIconDefProcResID,
  78.     kControlWindowHeaderDefProcResID,
  79.     kControlListBoxDefProcResID,
  80.     kControlPushButtonDefProcResID,
  81.     kControlScrollBarDefProcResID,
  82.     kControlPopupButtonDefProcResID,
  83.     kControlRadioGroupDefProcResID,
  84.     kControlOldPopupMenuDefProcResID = 63
  85. };
  86.  
  87. enum
  88. {
  89.     //////////////////////////////////////////////////////////////////
  90.     //
  91.     //    resource type for individual control font style record
  92.     //
  93.     //////////////////////////////////////////////////////////////////
  94.  
  95.     kMoreControls_ControlStyleType = FOUR_CHAR_CODE('cfsr')
  96. };
  97.  
  98. enum
  99. {
  100.     //////////////////////////////////////////////////////////////////
  101.     //
  102.     //    gap between controls and from edges of the parent window
  103.     //
  104.     //////////////////////////////////////////////////////////////////
  105.  
  106.     MoreControls_kControlGap = (3 + 1) // 3 for focus, 1 for white space
  107. };
  108.  
  109. enum
  110. {
  111.     //////////////////////////////////////////////////////////////////
  112.     //
  113.     //    alignments for AlignControl and AlignSubControls
  114.     //
  115.     //////////////////////////////////////////////////////////////////
  116.  
  117.  
  118.     MoreControls_kAlignSystem,
  119.     MoreControls_kAlignLeft,
  120.     MoreControls_kAlignCenter,
  121.     MoreControls_kAlignRight
  122. };
  123.  
  124. typedef UInt8 MoreControls_tAlignment;
  125.  
  126. enum
  127. {
  128.     //////////////////////////////////////////////////////////////////
  129.     //
  130.     //    directions for MoveControlNear and SetControlQuadrant
  131.     //
  132.     //////////////////////////////////////////////////////////////////
  133.  
  134.     MoreControls_kDirectionNorthWest,
  135.     MoreControls_kDirectionNorth,
  136.     MoreControls_kDirectionNorthEast,
  137.     MoreControls_kDirectionWest,
  138.     MoreControls_kDirectionCenter,
  139.     MoreControls_kDirectionEast,
  140.     MoreControls_kDirectionSouthWest,
  141.     MoreControls_kDirectionSouth,
  142.     MoreControls_kDirectionSouthEast
  143. };
  144.  
  145. typedef UInt8 MoreControls_tDirection;
  146.  
  147. //////////////////////////////////////////////////////////////////
  148. //
  149. //    tab control stuff for Appearance 1.0.1 or later
  150. //
  151. //////////////////////////////////////////////////////////////////
  152.  
  153. #if UNIVERSAL_INTERFACES_VERSION < 0x0310
  154.  
  155. enum
  156. {
  157.     kControlTabInfoTag            = 'tabi'                        /* ControlTabInfoRec*/
  158. };
  159.  
  160.  
  161. enum {
  162.     kControlTabInfoVersionZero    = 0
  163. };
  164.  
  165. struct ControlTabInfoRec {
  166.     SInt16                             version;                    /* version of this structure.*/
  167.     SInt16                             iconSuiteID;                /* icon suite to use. Zero indicates no icon*/
  168.     Str255                             name;                        /* name to be displayed on the tab*/
  169. };
  170. typedef struct ControlTabInfoRec ControlTabInfoRec;
  171.  
  172. #endif // UNIVERSAL_INTERFACES_VERSION < 0x0310
  173.  
  174. //////////////////////////////////////////////////////////////////
  175. //
  176. //    finally, the function prototypes
  177. //
  178. //////////////////////////////////////////////////////////////////
  179.  
  180. #ifdef __cplusplus
  181.     extern "C" {
  182. #endif
  183.  
  184. #pragma import on // for clients
  185. #pragma export on // for building a library
  186.  
  187. pascal OSStatus OffsetControl                            (ControlHandle, SInt16 h, SInt16 v);
  188. pascal OSStatus InsetControl                            (ControlHandle, SInt16 h, SInt16 v);
  189. pascal OSStatus ExpandControl                            (ControlHandle);
  190. pascal OSStatus EncloseSubControls                        (ControlHandle);
  191. pascal OSStatus AlignControl                            (ControlHandle anchor, ControlHandle, MoreControls_tAlignment);
  192. pascal OSStatus AlignSubControls                        (ControlHandle, MoreControls_tAlignment);
  193. pascal OSStatus SetBestControlRect                        (ControlHandle, SInt16 *baseLineOffset);
  194. pascal OSStatus MoveControlNear                            (ControlHandle moveMe, ControlHandle near, MoreControls_tDirection);
  195. pascal OSStatus SetControlQuadrant                        (ControlHandle, MoreControls_tDirection);
  196. pascal OSStatus MoreFindControlUnderMouse                (Point, WindowRef, ControlPartCode *, ControlHandle *);
  197.  
  198. pascal OSStatus GetListBoxControlListHandle                (ControlHandle, ListHandle *);
  199. pascal OSStatus GetStaticTextControlTextHeight            (ControlHandle, SInt16 *);
  200.  
  201. pascal OSStatus SetUserPaneTrackingProc                    (ControlHandle, ControlUserPaneTrackingUPP);
  202. pascal OSStatus SetUserPaneDrawProc                        (ControlHandle, ControlUserPaneDrawUPP);
  203. pascal OSStatus SetUserPaneSetUpSpecialBackgroundProc    (ControlHandle, ControlUserPaneBackgroundUPP);
  204.  
  205. pascal OSStatus SetBevelButtonMenu                        (ControlHandle, MenuRef);
  206. pascal OSStatus SetBevelButtonMenuDelay                    (ControlHandle, SInt32);
  207.  
  208. pascal OSStatus SetProgressBarIndeterminate                (ControlHandle, Boolean);
  209.  
  210. pascal OSStatus SetPopUpButtonMenu                        (ControlHandle, MenuRef);
  211.  
  212. pascal OSStatus Get1NewControl                            (short resID, WindowRef, ControlHandle *);
  213. pascal OSStatus Get1NewStaticTextControl                (short resID, WindowRef, ControlHandle *);
  214. pascal OSStatus Get1NewPopupButtonControl                (short resID, WindowRef, ControlHandle *);
  215.  
  216. pascal OSStatus InvalControl                            (ControlHandle);
  217. pascal OSStatus ValidControl                            (ControlHandle);
  218.  
  219. pascal OSStatus CopyTabFontStyle                        (ControlHandle oldTabs, ControlHandle newTabs);
  220. pascal OSStatus ToggleControl                            (ControlHandle);
  221. pascal OSStatus SetCursorAccordingToControl                (void);
  222. pascal OSStatus GetControlDefProcResID                    (ControlHandle, short *);
  223. pascal OSStatus MoreGetControlRegion                    (ControlHandle, RgnHandle *);
  224. pascal OSStatus SetControlTextFromResource                (ControlHandle, short textResID);
  225. pascal OSStatus SetControlTextStyleFromResource            (ControlHandle, short styleResID);
  226.  
  227. pascal OSStatus InsertTab                                (ControlHandle, ControlHandle *, UInt16 before);
  228. pascal OSStatus RemoveTab                                (ControlHandle, ControlHandle *, UInt16 which);
  229. pascal OSStatus SetTabIcon                                (ControlHandle, ControlPartCode, short iconSuiteID);
  230. pascal OSStatus AppendTabs                                (ControlHandle, UInt16);
  231. pascal OSStatus TruncateTabs                            (ControlHandle, UInt16);
  232.  
  233. pascal OSStatus IsScrollBar                                (ControlHandle, Boolean *);
  234.  
  235. pascal OSStatus IdleControlsInAllWindows                (void);
  236.  
  237. pascal OSStatus ActivateControls                        (WindowPtr);
  238. pascal OSStatus DeactivateControls                        (WindowPtr);
  239.  
  240. #pragma import reset // for clients
  241. #pragma export reset // for building a library
  242.  
  243. #ifdef __cplusplus
  244.     }
  245. #endif
  246.  
  247. #if !TARGET_CARBON
  248. #    define GetControlDefinition(x)        ((**(x)).contrlDefProc)
  249. #    define GetControlOwner(x)            ((**(x)).contrlOwner)
  250. #    define GetControlDataHandle(x)        ((**(x)).contrlData)
  251. #    define GetControlBounds(x,r)        do { *(r) = (**(x)).contrlRect; } while (false)
  252. #endif
  253.